package edu.nf.relaxenjoy.service;

import edu.nf.relaxenjoy.common.result.IPage;
import edu.nf.relaxenjoy.domain.dto.CommentDTO;
import edu.nf.relaxenjoy.domain.entity.Comment;
import edu.nf.relaxenjoy.domain.vo.CommentVo;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

/**
 * @author zhu
 * @date 2024-12-16
 */
public interface CommentService {

    /**
     * 得到所有的一级评论并携带一个二级评论
     *
     * @param page
     * @param limit
     * @param mid
     * @param uid
     * @return
     */
    IPage<CommentVo> getAllComment(long page, long limit, Long mid, Long uid);

    /**
     * 增加一条评论
     *
     * @param commentDTO
     * @return
     */
    CommentVo addComment(CommentDTO commentDTO);

    /**
     * 得到当前图片下的所有一级评论
     *
     * @param page
     * @param limit
     * @param mid
     * @param uid
     * @return
     */
    IPage<CommentVo> getAllOneCommentByPostId(long page, long limit, Long mid, Long uid);

    /**
     * 得到所有的二级评论根据一级评论id
     *
     * @param page
     * @param limit
     * @param id
     * @param uid
     * @return
     */
    IPage<CommentVo> getAllTwoCommentByOneId(long page, long limit, Long id, Long uid);

    /**
     * 得到所有的二级评论
     *
     * @param id
     * @param uid
     * @return
     */
    List<CommentVo> getAllTwoComment(Long id, Long uid);

    /**
     * 查看所有回复的评论
     *
     * @param page
     * @param limit
     * @param uid
     * @return
     */
    List<CommentVo> getAllReplyComment(long page, long limit, Long uid);

    /**
     * 删除一条评论
     * @param id
     */
    void delComment(Long id);

    /**
     * 从评论中找到目标评论及其相关回复
     * @param id
     * @param mid
     * @param uid
     * @return
     */
    Map<String, Object> scrollComment(Long id, Long mid, Long uid);

    /**
     * 查询评论
     * @param id
     * @return
     */
    Comment getById(Long id);
}
